The present invention relates generally to computer system management, and specifically to monitoring computing machines without a priori knowledge of the applications running on the machines.
Virtual machine computing simplifies the use of computing resources by elevating the level of abstraction, which benefits resource providers. Server virtualization is typically used to make more efficient use of server resources, to improve server availability, and to centralize server administration. Server virtualization masks server resources, such as the identity of individual physical servers and processors, from server users. Furthermore, with the advent of freeze-dried software stacks, virtualization also has the potential to mask the operating system.
A single physical server is usually divided into multiple isolated virtual environments.
The use of virtual computers (generally referred to as “virtual machines”) to enhance computing power has been known for several decades. For example, a classic system, VM, produced by the IBM Corporation, enabled multiple users to concurrently use a single computer by running multiple copies of the operating system. Virtual computers have been realized on many different types of computer hardware platforms, including both single-processor and multi-processor units.
Monitoring the status of applications running on a distributed network typically includes passive network monitoring or a combination of application-level and passive network monitoring. Data flows are identified and data is collected on a per-flow or per-application basis, enabling calculation of performance metrics. Collecting and publishing per-flow network data is typically performed using standards such as internet protocol flow information export (IPFIX) and Netflow™.